#ifndef CIUDAD_H
#define CIUDAD_H

#include "ICiudad.h"
#include "Cadena.h"
#include "Excursion.h"
#include "ListaImp.h"

class Excursion;

class Ciudad : public ICiudad{
	friend ostream &operator<<(ostream&, const ICiudad &);
protected:
	Cadena nombre;
	nat costoDiario;
	Puntero<Lista<Puntero<Excursion>>> excursiones;
	//medios de transporte aca?

public:
	//Constructores
	Ciudad(const Cadena &Nombre, const nat &CostoDiario); 

	virtual ~Ciudad();

	Cadena ObtenerNombre() const;
	nat ObtenerCostoDiario() const;

	bool operator==(const ICiudad& c) const;

	bool operator<(const ICiudad& c) const;
	bool operator>(const ICiudad& c) const;
	void AgregarExcursion(const Puntero<Excursion> & exc);
	Puntero<Iterador<Puntero<Excursion>>> ObtenerExcursiones() const;
};

#endif